const fs = require('fs')
const fsPromises = require('fs').promises // node v10.0.0
// node v13 增加了import

// curd retireve
// 文件夹的操作

// 第一个参数：文件夹名字，第二个参数：错误优先
// fs.mkdir('logs', (err) => { 
//   if(err) throw err
//   console.log('文件夹创建成功。')
// })

// fs.rename('./logs', './log', () => {
//   console.log('文件夹名字修改成功。')
// })

// fs.rmdir('./log', () => {
//   console.log('done.')
// })

// fs.readdir('./logs', (err, result) => {
//   console.log(result)
// })

// fs.writeFile('./logs/log1.log', 'hello \nworld', (err) => {  // \n new line
//   // 重复执行，改变内容，可以重新写入
//   console.log('done.')
// })

// fs.appendFile('./logs/log1.log', '!!!', (err) => {
//   console.log('done.')
// })

// fs.unlink('./logs/log1.log', (err) => {
//   console.log('done.')
// })

// fs.readFile('./logs/log1.log', (err, content) => {
//   console.log(content)
//   console.log(content.toString())
// })

// fs.readFile('./logs/log1.log', 'utf-8', (err, content) => {
//   console.log(content)
// })

// fs.readFile('./logs/log1.log', (err, content) => {
//   console.log(content.toString())
// })
// const content = fs.readFileSync('./logs/log1.log')
// console.log(content.toString())
// console.log('continue...')

// ;(() => {}){} // 立即调用表达式  ;() []

// ;(async () => {
//   let result = await fsPromises.readFile('./logs/log1.log')
//   console.log(result.toString())
// })()

// 批量写文件
// for(var i = 0;i < 5;i ++) {
//   fs.writeFile(`./logs/log-${i}.txt`, `log-${i}`, (err) => {
//     console.log('done.')
//   })
// }

// 读取文件/目录信息

function readDir(dir) {
  fs.readdir(dir, (err, data) => {
    data.forEach((value, index) => {
      // statistics 统计
      let joinDir = `${dir}/${value}`
      fs.stat(joinDir, (err, stats) => {
        // console.log(stats)
        // console.log(value + ':' + stats.size)
        // console.log(value + ' is ' + (stats.isDirectory() ? 'directory' : 'file'))
        if(stats.isDirectory()) {
          readDir(joinDir)
        } else {
          fs.readFile(joinDir, 'utf-8', (err, content) => {
            console.log(content)
          })
        }
      })
    })
  })
}

// readDir('./')

fs.watch('./logs/log-0.txt', (err) => {
  console.log('file has changed.')
})

fs.watchFile('./logs/log-0.txt', (curr, prev) => {
  console.log(`当前的最近修改时间是: ${curr.mtime}`);
  console.log(`之前的最近修改时间是: ${prev.mtime}`);
});
